import showdown from 'showdown';
import TurndownService from 'turndown';
import DOMPurify from 'dompurify';

export function markdownToHtml(input: string) {
  const converter = new showdown.Converter();
  // 将 Markdown 转换成 HTML
  const htmlContent = converter.makeHtml(input);
  // 使用 DOMPurify 清洗 HTML，以防止 XSS 攻击
  return DOMPurify.sanitize(htmlContent);
}

export function htmlToMarkdown(input: string) {
  const converter = new TurndownService();
  // 将 HTML 转换成 Markdown
  return converter.turndown(input);
}

// HTML 转 Markdown 的简单实现
// const htmlToMarkdown = (html: string): string => {
//   if (!html) return '';

//   return html
//     // 标题转换
//     .replace(/<h1[^>]*>(.*?)<\/h1>/gi, '# $1\n\n')
//     .replace(/<h2[^>]*>(.*?)<\/h2>/gi, '## $1\n\n')
//     .replace(/<h3[^>]*>(.*?)<\/h3>/gi, '### $1\n\n')
//     .replace(/<h4[^>]*>(.*?)<\/h4>/gi, '#### $1\n\n')
//     .replace(/<h5[^>]*>(.*?)<\/h5>/gi, '##### $1\n\n')
//     .replace(/<h6[^>]*>(.*?)<\/h6>/gi, '###### $1\n\n')
//     // 段落转换
//     .replace(/<p[^>]*>(.*?)<\/p>/gi, '$1\n\n')
//     // 强调
//     .replace(/<strong[^>]*>(.*?)<\/strong>/gi, '**$1**')
//     .replace(/<b[^>]*>(.*?)<\/b>/gi, '**$1**')
//     .replace(/<em[^>]*>(.*?)<\/em>/gi, '*$1*')
//     .replace(/<i[^>]*>(.*?)<\/i>/gi, '*$1*')
//     // 代码
//     .replace(/<code[^>]*>(.*?)<\/code>/gi, '`$1`')
//     .replace(/<pre[^>]*><code[^>]*>(.*?)<\/code><\/pre>/gis, '```\n$1\n```\n\n')
//     // 链接
//     .replace(/<a[^>]*href="([^"]*)"[^>]*>(.*?)<\/a>/gi, '[$2]($1)')
//     // 图片
//     .replace(/<img[^>]*src="([^"]*)"[^>]*alt="([^"]*)"[^>]*>/gi, '![$2]($1)')
//     .replace(/<img[^>]*src="([^"]*)"[^>]*>/gi, '![]($1)')
//     // 列表
//     .replace(/<ul[^>]*>([\s\S]*?)<\/ul>/gi, (match, content) => content.replace(/<li[^>]*>(.*?)<\/li>/gi, '- $1\n'))
//     .replace(/<ol[^>]*>([\s\S]*?)<\/ol>/gi, (match, content) => {
//       let index = 1;
//       return content.replace(/<li[^>]*>(.*?)<\/li>/gi, () => `${index++}. $1\n`);
//     })
//     // 引用
//     .replace(/<blockquote[^>]*>(.*?)<\/blockquote>/gi, '> $1\n\n')
//     // 换行
//     .replace(/<br[^>]*>/gi, '\n')
//     // 清理多余的换行和空格
//     .replace(/\n{3,}/g, '\n\n')
//     .trim();
// };

// // Markdown 转 HTML 的简单实现
// const markdownToHtml = (markdown: string): string => {
//   if (!markdown) return '';

//   return markdown
//     // 标题转换
//     .replace(/^### (.*$)/gim, '<h3>$1</h3>')
//     .replace(/^## (.*$)/gim, '<h2>$1</h2>')
//     .replace(/^# (.*$)/gim, '<h1>$1</h1>')
//     // 强调
//     .replace(/\*\*(.*)\*\*/gim, '<strong>$1</strong>')
//     .replace(/\*(.*)\*/gim, '<em>$1</em>')
//     // 代码
//     .replace(/`([^`]*)`/gim, '<code>$1</code>')
//     .replace(/```([\s\S]*?)```/gim, '<pre><code>$1</code></pre>')
//     // 链接
//     .replace(/\[([^\]]*)\]\(([^\)]*)\)/gim, '<a href="$2">$1</a>')
//     // 图片
//     .replace(/!\[([^\]]*)\]\(([^\)]*)\)/gim, '<img src="$2" alt="$1">')
//     // 有序列表
//     .replace(/^\d+\. (.*)$/gim, '<li>$1</li>')
//     // 无序列表
//     .replace(/^- (.*)$/gim, '<li>$1</li>')
//     // 引用
//     .replace(/^> (.*)$/gim, '<blockquote>$1</blockquote>')
//     // 段落处理
//     .split('\n\n')
//     .map(paragraph => {
//       paragraph = paragraph.trim();
//       if (!paragraph) return '';
//       if (!paragraph.match(/^<[^>]+>/)) {
//         return `<p>${paragraph}</p>`;
//       }
//       return paragraph;
//     })
//     .filter(p => p)
//     .join('\n');
// };
